package com.example.demo.mapper;

import com.example.demo.entity.Articleinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description: 操作文章表
 */
@Mapper
public interface ArticleMapper {
    // 根据用户 id 查询用户文章数量
    Integer getArtCountByUid(@Param("uid") Integer uid);

    // 根据用户 id 查询用户博客
    List<Articleinfo> getMyList(@Param("uid") Integer uid, @Param("start") Integer start, @Param("size") Integer size);

    // 根据用户 id 查询用户草稿数量
    Integer getDraftCountByUid(@Param("uid") Integer uid);

    // 根据文章 id 逻辑删除博客
    Integer del(@Param("id") Integer id, @Param("uid") Integer uid);

    // 根据文章 id 获取文章详情信息
    Articleinfo getDetail(@Param("id") Integer id);

    // 根据文章 id 获取文章详情信息，并进行身份校验
    Articleinfo getMyDetail(@Param("id") Integer id, @Param("uid") Integer uid);

    // 根据文章 id 将文章阅读量自增
    Integer addRcountById(@Param("id") Integer id);

    // 新增文章操作
    Integer addArticle(Articleinfo articleinfo);

    // 新增定时发布文章的操作，返回博客自增的 id
    Integer addTimeArticle(Articleinfo articleinfo);

    // 修改文章内容
    Integer updateArticle(Articleinfo articleinfo);

    // 修改文章状态码
    Integer updateArticleState(Articleinfo articleinfo);

    // 保存草稿
    Integer addDraft(Articleinfo articleinfo);

    // 根据开始位置和一页的最大博客数量来获取之后的博客内容，按照时间降序获取
    List<Articleinfo> getList(@Param("start") Integer start, @Param("size") Integer size);

    // 根据用户 id、state、start、size查询用户草稿，按照修改时间降序获得
    List<Articleinfo> getMyDraftList(@Param("uid") Integer uid, @Param("start") Integer start, @Param("size") Integer size);
}
